package dt.board.qna;

public class pagingAction {
	
	private int currentPage; // 현재페이지 번호 
	private int totalCount;	 // 전체 게시물 수
	private int totalPage;	 // 총 페이지 수
	private int blockCount;	 // 한 페이지에 보여줄 게시글 수 
	private int blockPage;	 // 이전다음 갯수
	private int startCount;	 // 선택한 페이지의 게시글의 시작 번호
	private int endCount;	 // 선택한 페이지의 게시글의 마지막 번호
	private int startPage;	 // 시작 페이지
	private int endPage;	 // 마지막 페이지
	
	private StringBuffer pagingHtml; //스트링버퍼 객체 선언 
	
	public pagingAction(int currentPage, int totalCount, int blockCount, int blockPage, int searchNum, String isSearch)
	{
		this.blockCount = blockCount;  // 10   한 페이지에 보여줄 게시글 수 
		this.blockPage = blockPage;    // 5    이전 다음 갯수  
		this.currentPage = currentPage;// 2    현재 페이지 
		this.totalCount = totalCount;  // 35   총 글 갯수 
		
		totalPage = (int) Math.ceil((double) totalCount / blockCount);  // ceil 올림 연산으로 토텔 페이지 계산 
		if(totalPage == 0)
		{
			totalPage = 1;
		}
		
		if(currentPage > totalPage)   //토탈 페이지의 수 보다 현재 페이지 수가 크다면 현재페이지가 토탈 페이지의 수 
		{
			currentPage = totalPage;
		}
		
		startCount = (currentPage - 1) * blockCount; //그 페이지의 첫번째 글 번호 ex.2번쨰 페이지는 11번 글부터 표시  
		endCount = startCount + blockCount-1;        //그 페이지의 마지막 글 번호 20번 까지  
		
		startPage = (int)((currentPage - 1)/blockPage) * blockPage + 1; // 이전다음의 시작 페이지 번호 
		endPage = startPage + blockPage - 1;                            // 이전다음의 마지막 페이지 번호 
		
		if(endPage > totalPage)  // 만약 총 페이지수가 이전다음의 마지막 페이지의 수보다 작다면 이전다음의 마지막 페이지는 총 페이지의 수로 설정  
		{
			endPage = totalPage;
		}
		
		
		pagingHtml = new StringBuffer(); //스트링버퍼 객체 생성 
		if(currentPage > blockPage)  //이전과 다음을 만들고 안의 페이징 링크를 만든다
		{
			if(isSearch != "")
				pagingHtml.append("<a href=qnaListAction.action?currentPage=" + (startPage - 1) + "&searchKeyword="+isSearch+"&searchNum="+searchNum+">");
			else
				pagingHtml.append("<a href=qnaListAction.action?currentPage=" + (startPage - 1) + ">");
			pagingHtml.append("이전");
			pagingHtml.append("</a>");
		}
		
		pagingHtml.append("&nbsp;|&nbsp;");
		
		for(int i = startPage;i<=endPage;i++)
		{
			if(i > totalPage)
			{
				break;
			}
			if(i == currentPage)
			{
				pagingHtml.append("&nbsp;<b> <font color='red'>"); //현재 선택한 페이지는 링크를 없에고 글씨체를 볼드로 글자색을 붉은색으로 바꾸어 준다
				pagingHtml.append(i);
				pagingHtml.append("</font></b>");
			}
			else
			{
				pagingHtml.append("&nbsp;<a href='qnaListAction.action?currentPage=");
				pagingHtml.append(i);
				if(isSearch != "")
					pagingHtml.append("&searchKeyword="+isSearch);
				pagingHtml.append("'>");
				pagingHtml.append(i);
				pagingHtml.append("</a>");
			}
			
			pagingHtml.append("&nbsp;");
		}
		
		pagingHtml.append("&nbsp;&nbsp;|&nbsp;&nbsp;");
		
		if(totalPage - startPage >= blockPage)
		{
			pagingHtml.append("&nbsp;<a href='qnaListAction.action?currentPage=");
			pagingHtml.append((endPage+1));
			if(isSearch != "")
				pagingHtml.append("&searchKeyword="+isSearch);
			pagingHtml.append("'>");
			pagingHtml.append("다음");
			pagingHtml.append("</a>");
		}
	}

	

	public int getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}

	public int getTotalCount() {
		return totalCount;
	}

	public void setTotalCount(int totalCount) {
		this.totalCount = totalCount;
	}

	public int getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}

	public int getBlockCount() {
		return blockCount;
	}

	public void setBlockCount(int blockCount) {
		this.blockCount = blockCount;
	}

	public int getBlockPage() {
		return blockPage;
	}

	public void setBlockPage(int blockPage) {
		this.blockPage = blockPage;
	}

	public int getStartCount() {
		return startCount;
	}

	public void setStartCount(int startCount) {
		this.startCount = startCount;
	}

	public int getEndCount() {
		return endCount;
	}

	public void setEndCount(int endCount) {
		this.endCount = endCount;
	}

	public int getStartPage() {
		return startPage;
	}

	public void setStartPage(int startPage) {
		this.startPage = startPage;
	}

	public int getEndPage() {
		return endPage;
	}

	public void setEndPage(int endPage) {
		this.endPage = endPage;
	}

	public StringBuffer getPagingHtml() {
		return pagingHtml;
	}

	public void setPagingHtml(StringBuffer pagingHtml) {
		this.pagingHtml = pagingHtml;
	}
	
	

}
